\section{\HelloWorldSectionName}
\label{sec:helloworld}

Skorzystajmy ze sławnego przykładu z książki [C Programming Language (Kernighan Brian W.)]:

\lstinputlisting[style=customc]{patterns/01_helloworld/hw.c}

\subsection{x86}

\input{patterns/01_helloworld/MSVC_x86}
\input{patterns/01_helloworld/GCC_x86}
\input{patterns/01_helloworld/string_patching_PL}

\subsection{x86-64}
\input{patterns/01_helloworld/MSVC_x64}
\input{patterns/01_helloworld/GCC_x64}
\input{patterns/01_helloworld/address_patching_PL}

\input{patterns/01_helloworld/GCC_one_more}
\input{patterns/01_helloworld/ARM/main}
\input{patterns/01_helloworld/MIPS/main}

\subsection{\Conclusion{}}

Największa różnica między kodem w x86/ARM a x64/ARM64 polega na tym, że wskaźnik na linię stał się 64-bitowy.
Właśnie, współczesne \ac{CPU} stały się 64-bitowe, dlatego że pamięć stała się znacznie tańsza,
komputery mogą zawierać jej o wiele więcej niż wcześniej i 32-bit już jest za mało, żeby ją zaadresować.

% sections
\input{patterns/01_helloworld/exercises}


